cdk8s で Kubernetes のリソース定義を効率化 – AWS Summit Bangkok 2024 セッションレポート
はじめに
クラスメソッドタイランドの清水です。
2024年5月30日にタイ・バンコクで行われた AWS Summit Bangkok の「New era of IaC: Effective Kubernetes management with cdk8s」というセッションに参加しました。
cdk8s は CNCF(Cloud Native Computing Foundation) の sandbox プロジェクトだそうです。cdk8s を使うと、yaml ではなくオブジェクト指向言語で k8s のリソースを定義ができます。
ただし、cdk8s は k8s のややこしい manifest をあまり抽象化できません。
そこで、cdk8s+ という、manifest を抽象化してくれる別のライブラリも提供されています。
このセッションでは、 CDK, cdk8s, cdk8s-plus を使って、 AWS に k8s クラスターをプロビジョニングし、さらにアプリケーションを起動するデモが紹介されていました。
セッションの内容
cdk8s を使ったプロジェクトのフローは、
- cdk8s cli でプロジェクトを初期化
- コーディング
- Manifest ファイルを生成
- k8s cluster にデプロイ
となっています。
次は k8s の manifest ファイルと cdk8s の構文の比較です。
こう見ると yaml が TypeScript になっただけでほとんど同じですね。
そこで、cdk8s+ を使うと、かなり省略してリソースを定義することができます。
左が cdk8s+, 右が cdk8s の構文です。
たった 3行の cdk8s+ で 10数行の manifest ファイルを同じリソースを定義できています。
ここからは動画でしたが、cdk, cdk8s, cdk8s+ を1つのファイルで定義し、cdk deploy
コマンドを使ってデプロイをしていました。
デプロイ中/完了後のターミナルです。通常のcdk deploy
コマンドの出力と同じ感じです。
cdk の Output で表示された ALB の URL にアクセスすると Web ページがホスティングされていることが分かります。
今回の構成は以下のような感じです。
まとめです。
- cdk8s: k8s のリソースをモデリングしたフレームワークです
- cdk8s+: cdk8s を抽象化したライブラリです
最後に
本セッションでは、cdk8s+というIaCツールの可能性について学ぶことができました。
cdk8s+は、Kubernetesクラスタの構築・管理を効率化できるだけでなく、コードの可読性や保守性を向上させることもできます。
今後時間を見つけて cdk8s, cdk8s+ を使ってみて、ブログにしたいと思います。